style: Fix drawing of insensitive text
authorBenjamin Otte <otte@redhat.com>
Sun, 12 Sep 2010 13:55:57 +0000 (15:55 +0200)
committerBenjamin Otte <otte@redhat.com>
Sun, 12 Sep 2010 14:00:05 +0000 (16:00 +0200)
When writing the original code I erroneously assumed that the current
point of the cairo context would be saved by cairo_save/restore(), but
of course the current point is part of the path and therefor isn't
saved.

Also do a cairo_new_path() before rendering any text so that we are sure
the text ends up at the right spot.

gtk/gtkstyle.c

index d4fa6594a90151851ccc6e897f0f5ba53bc32d87..e47a01871abd72729188e48818944bc30c402680 100644 (file)
@@ -4227,13 +4227,14 @@ gtk_default_draw_layout (GtkStyle        *style,
   else
     cairo_translate (cr, x, y);
 
+  cairo_new_path (cr);
+
   if (state_type == GTK_STATE_INSENSITIVE)
     {
-      cairo_save (cr);
       gdk_cairo_set_source_color (cr, &style->white);
       cairo_move_to (cr, 1, 1);
       _gtk_pango_fill_layout (cr, layout);
-      cairo_restore (cr);
+      cairo_new_path (cr);
     }
 
   gc = use_text ? &style->text[state_type] : &style->fg[state_type];